AWS CloudShellを利用して簡単にAWS Lambda (Python)のLambda Layerを作成する

AWS CloudShellを利用して簡単にAWS Lambda (Python)のLambda Layerを作成する

Clock Icon2023.09.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部のueharaです。

今回は、AWS CloudShellを利用して簡単にAWS Lambda (Python)のLambda Layerを作成してみたいと思います。

はじめに

今回はLambdaのランタイムはPython 3.9を想定することにします。

こちらのページに記載の通り、Python 3.9ランタイムは「Amazon Linux 2」上で動作しています。

したがって、基本的にはLambda Layer用のzipファイルについてもAmazon Linux 2上で作成した方が安全です。

Amazon LinuxはDockerイメージが公開されているため、当該イメージを用いてzipファイルを作成することもできますが、今回はAWS CloudShellを利用してLayerを作成する方法をご紹介します。

CloudShellを利用することで、ローカル環境にレイヤー作成用の環境を用意せずにLambda Layerを作成することが可能です。

AWS CloudShellについて

AWS CloudShellはWebブラウザ(AWSマネージメントコンソール)上からお手軽にシェルを実行出来るサービスです。

ローカルにあるファイルを画面上からアップロードすることもできます。

2023年9月現在、CloudShellのOSは「Amazon Linux 2」となっております。

使い方は非常に簡単で、マネジメントコンソールから「CloudShell」を検索し、サービスに移動するだけでシェルの利用を開始することができます。

念のため、OSを確認したところ、以下のようにAmazon Linux 2であることが確認できました。

$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

ちなみに、アーキテクチャはx86_64となっていました。

$ uname -m
x86_64

CloudShellを使ったLambda Layerの作成

CloudShellへのPython 3.9のインストール

まず、CloudShellへPython 3.9のインストールをします。

インストール方法については、以前以下の記事でご紹介しております。

上記でご紹介しているBashスクリプトの実行が完了すると、CloudShell上でPython 3.9が利用できるようになっています。

$ which python3.9
~/.local/bin/python3.9

$ which pip3.9
~/.local/bin/pip3.9

Lambda Layer作成用のスクリプトの実行

まず、インストールしたいライブラリを記載したrequirements.txtを作成し、CloudShell上にアップロードします。

numpy==1.23.0
pandas==1.4.3
python-dateutil==2.8.2
pytz==2022.1
pyarrow==8.0.0
six==1.16.0

次に、以下のLambda Layer作成用のスクリプトを作成し、こちらもCloudShell上にアップロードします。

#!/bin/bash -eu

BUCKETNAME=$1
LAYERNAME=$2
SRC=./python
DIST=./layer.zip

pip3.9 install -t ${SRC} -r requirements.txt
rm -f ${DIST}
zip -q -r ${DIST} ${SRC}

aws s3 cp ./layer.zip s3://$BUCKETNAME/layer/layer.zip
aws lambda publish-layer-version \
    --layer-name $LAYERNAME \
    --compatible-runtimes python3.9 \
    --content S3Bucket=$BUCKETNAME,S3Key=layer/layer.zip

この時点で、CloudShell上のファイルは次のようになっていると思います。

あとは、以下のコマンドでスクリプトを実行するだけでLambda Layerの作成ができます。
※S3のバケットは事前に作成済みであることを想定します

$ bash make_lambda_layer.sh <zipファイルを保存するS3のバケット名> <Lambda Layer名>
# 例: bash make_lambda_layer.sh test-uehara-bucket test-uehara-layer

実行が完了すると、以下の通りLambda Layerが作成できていることを確認できます。

最後に

今回は、今回は、AWS CloudShellを利用して簡単にAWS Lambda (Python)のLambda Layerを作成してみました。

参考になりましたら幸いです。

参考文献

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.